﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DAL;
using System.Data;
using System.IO;
using System.Configuration;
using System.Transactions;
using System.Data.Linq;
using System.ComponentModel;
using UtilityExtensions;

namespace BOL.Banco
{
    /// <summary>
    /// Obtiene todos las cuentas que no fueron utilizados para la etapa, necesario  para no repetir la
    /// cuenta proyecto
    /// </summary>
    public class GetCuentaProyectoListDifXEtapa
    {
        int _count;



        public int Count(string etapaStr,
                         int startRowIndex,
                         int maximumRows,
                         string sortExpression)
        {
            return _count;
        }



   
    

        [DataObjectMethod(DataObjectMethodType.Select, false)]
        public IEnumerable<CuentaProyectoListInfo> Execute(string etapaStr,
                                         int startRowIndex,
                                         int maximumRows,
                                         string sortExpression)
        {

            var etapa=DbUtil.Db.Etapas.Single(p=>p.idInternal==int.Parse(etapaStr));
            
            var qqq = etapa.CuentaProyectoItems.Select(p=>p.idCuentaProyecto);
            

            var obj = new GetCuentaProyectoList();
            
            var q = obj.ApplySelect_CuentaProyectoInfo();
            
            int idEmpresa = (int)System.Web.HttpContext.Current.Session["login.Empresa.idEmpresa"];

            q = q.Where(a => a.idProyecto == etapa.idProyecto & !qqq.Contains(a.idInternal));
                             

            _count = q.Count();

            q =obj.ApplySort(q, sortExpression);
            return q.Skip(startRowIndex).Take(maximumRows);
        }




    }
}
